﻿using Manon.Admin.Web.Application.Dtos;
using Manon.Admin.Web.Application.Dtos.Member;
using Manon.Core;
using Manon.Core.IOC;
using Manon.Repository.Collections;

namespace Manon.Admin.Web.Application
{
    public interface IMemberService : IScopeDependency
    {
        #region 会员等级
        /// <summary>
        /// 获取会员等级
        /// </summary>
        /// <param name="Id"></param>
        /// <returns></returns>
        Task<GetMemberLevelOutput> GetMemberLevel(int Id);

        /// <summary>
        /// 获取会员等级列表
        /// </summary>
        /// <param name="Input"></param>
        /// <returns></returns>
        Task<PagedList<GetMemberLevelOutput>> GetMemberLevelPagedList(GetMemberLevelPagedListInput Input);

        /// <summary>
        /// 保存会员等级 
        /// </summary>
        /// <param name="Input"></param>
        /// <returns></returns>
        Task<Result> SaveMemberLevel(SaveMemberLevelInput Input);

        /// <summary>
        /// 设置会员等级是否可用
        /// </summary>
        /// <param name="Input"></param>
        /// <returns></returns>
        Task<Result> SetMemberLevelEnabled(int Id, bool Enabled);
        #endregion

        #region 会员管理

        Task<List<GetMemberLevelOutput>> GetMemberLevelList();
        /// <summary>
        /// 获取会员管理
        /// </summary>
        /// <param name="Id"></param>
        /// <returns></returns>
        Task<GetMemberOutput> GetMember(int Id);

        /// <summary>
        /// 获取会员管理列表
        /// </summary>
        /// <param name="Input"></param>
        /// <returns></returns>
        Task<PagedList<GetMemberOutput>> GetMemberPagedList(GetMemberPagedListInput Input);

        /// <summary>
        /// 保存会员管理
        /// </summary>
        /// <param name="Input"></param>
        /// <returns></returns>
        Task<Result> SaveMember(SaveMemberInput Input);


        /// <summary>
        /// 设置会员管理是否可用
        /// </summary>
        /// <param name="Input"></param>
        /// <returns></returns>
        Task<Result> SetMemberEnabled(int Id, bool Enabled);
        #endregion
    }
}
